An Extensible Debugging Architecture Based on a Hybrid Debugging Framework
نویسندگان
چکیده
The cost of writing debuggers is very high. Most debuggers are written employing low level operating system and hardware specific code, which is hard to port to new platforms or architectures and to extend with new debugging techniques. Moreover, current debuggers are usually limited in the amount of analysis that they perform and the level of detail that they provide in order to assist with debugging. Most debuggers are well suited for a specific class of bugs. Different bugs call for different debugging techniques, so experimentation is needed in order to develop the features that will someday be widely adopted in debuggers. This dissertation contributes three primary results. First, it introduces an event-driven debugging framework named AlamoDE (Alamo—Debug Enabled). The role of this framework is analogous to an abstraction layer upon which to build debuggers. AlamoDE 1) provides in-process debugging support with simple communication and no intrusion on the buggy program space, 2) enables debugging tools to be written at a high level of abstraction, and 3) facilitates developers of experimental automatic debugging features in a very high level language. AlamoDE supports construction of a variety of user-defined debugging tools that range from classical source-level debuggers to automated and dynamic analysis techniques. Second, this dissertation presents an extensible agent-based debugging architecture named IDEA (Idaho Debugging Extension Architecture). IDEA offers novel debugging techniques that break the rigidness, closeness, and inextensibility of most current debuggers. It provides programmers with the ability to easily implement, test, and combine user-defined debugging agents, and offers a simple dynamic and static extension mechanism. Finally, this dissertation provides a production source-level debugger for the Unicon language named UDB. UDB leverages the classical interactive debugging process with 1) built-in agents employing automatic detection and dynamic analysis techniques, 2) a simple interface to load, unload, enable, and disable separately-compiled dynamically-loaded external debugging agents that work in conjunction with the conventional source-level debugging session and its internal agents, and 3) Dynamic Temporal Assertions (DTA) that assert a sequence of runtime properties. DTAs are introduced for the first time within typical source-level debuggers that targets sequential programs. While IDEA simplifies a source-level debugger’s extensibility and eases its usability, debugging agents add indispensable value with moderate impact on the performance of the debugger. Different agents can work in concert with each other to provide programmers with better understanding of the program’s execution behavior and simplify the process of debugging and hunting for elusive and hard to catch bugs.
منابع مشابه
Kahina: A Hybrid Trace-Based and Chart-Based Debugging System for Grammar Engineering
This paper provides an overview of the debugging framework Kahina, discussing its architecture as well as its application to debugging in different constraint-based grammar engineering environments. The exposition focuses on and motivates the hybrid nature of the system between source-level debugging by means of a tracer and high-level analysis by means of graphical tools.
متن کاملArchitecture of an Extensible Parallel Debugger
The LERP debugger is a design for an ex-tensible debugging tool for a large array processor. It is extensible in addressing debugging in terms of program-mer's abstractions and paradigms. It includes tools to aid the user to be selective in debugging large numbers of processes .
متن کاملMulti-level Virtual Machine Debugging Using the Java Platform Debugger Architecture
Debugging virtual machines (VMs) presents unique challenges, especially meta-circular VMs, which are written in the same language they implement. Making sense of runtime state for such VMs requires insight and interaction at multiple levels of abstraction simultaneously. For example, debugging a Java VM written in Java requires understanding execution state at the source code, bytecode and mach...
متن کاملMARKOVIAN SOFTWARE RELIABILITY MODEL FOR TWO TYPES OF FAILURES WITH IMPERFECT DEBUGGING RATE AND GENERATION OF ERRORS
N
متن کاملDemonstration of a Domain-Specific Language Debugging Framework
This demonstration presents a debugging framework that targets domain-specific languages (DSLs). The DSL Debugging Framework (DDF) generates debuggers automatically from DSL grammar specifications. The debugging concern is weaved into a base grammar in an aspect-oriented style. DDF was used to generate debuggers for three different types of DSLs (imperative, declarative, and hybrid) that are tr...
متن کامل